﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

//给你一个整数数组 nums，将 nums 中的的所有偶数元素移动到数组的前面，后跟所有奇数元素。
//返回满足此条件的 任一数组 作为答案。
//稍微优化了一下
//int* sortArrayByParity(int* nums, int numsSize, int* returnSize)
//{
//	*returnSize = numsSize;
//	int right = numsSize - 1;
//	int left = 0;
//	while (left < right)
//	{
//		if (nums[left] % 2 == 0)
//		{
//			left++;
//		}
//		else if (nums[right] % 2 == 1)
//		{
//			right--;
//		}
//		else
//		{
//			int tmp = nums[left];
//			nums[left] = nums[right];
//			nums[right] = tmp;
//		}
//	}
//	return nums;
//}

//给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target  的那 两个 整数，并返回它们的数组下标。
//你可以假设每种输入只会对应一个答案。但是，数组中同一个元素在答案里不能重复出现。
//你可以按任意顺序返回答案。
//int* twoSum(int* nums, int numsSize, int target, int* returnSize)
//{
//	
//}

//int main()
//{
//	int k = 0;
//	scanf("%d", &k);
//	int amount = 0;
//	while (k)
//	{
//		amount++;
//		k = k & (k - 1);
//	}
//	printf("%d", amount);
//	return 0;
//}

//int search(int* nums, int numsSize, int target)
//{
//	int right = numsSize - 1;
//	int left = 0;
//	int flag = 0;
//	int mid = (left + right) / 2;
//	while (left<=right)
//	{
//		mid = (left + right) / 2;
//		if (nums[mid] > target)
//		{
//			right = mid - 1;
//		}
//		else if (nums[mid] < target)
//		{
//			left = mid + 1;
//		}
//		else
//		{
//			flag++;
//			break;
//		}
//	}
//	if (left < right)
//	{
//		int j = mid-1;
//		while (nums[j]==target&&j>=0)
//		{
//			flag++;
//			j--;
//		}
//		j = mid + 1;
//		while (nums[j] == target&&j<numsSize)
//		{
//			flag++;
//			j++;
//		}
//		return flag;
//	}
//	return flag;
//}
//int main()
//{
//	int nums[] = { 2,2 };
//	int sz = sizeof(nums) / sizeof(nums[0]);
//	int k = 2;
//	search(nums, sz, k);
//	return 0;
//}